#include <iostream>
#include <stdlib.h>
using namespace std;

void test(int* &ra)
{
    ra = (int*)malloc(sizeof(int));
    *ra = 10;
}

int main()
{
    int a = 20;
    int *pa = &a;
    cout << *pa << endl;
    test(pa);
    cout << *pa << endl;
    free(pa);
}

// void test(int** ppa)
// {
//     *ppa = (int*)malloc(sizeof(int));
//     **ppa = 10;
// }

// int main()
// {
//     int a = 20;
//     int *pa = &a;
//     cout << *pa << endl;
//     test(&pa);
//     cout << *pa << endl;
//     free(pa);
// }


// void Swap(int& left, int& right)
// {
//     int temp = left;
//     left = right;
//     right = temp;
// }

// int main()
// {
//     int a = 3;
//     int b = 5;
//     Swap(a,b);
//     return 0;
// }


// void Swap(int* left, int* right)
// {
//     int temp = *left;
//     *left = *right;
//     *right = temp;
// }



// int main()
// {
//     int a = 3;
//     int b = 5;
//     Swap(&a,&b);
//     return 0;
// }

// void Swap(int& a, int& b)
// {
//     int temp = a;
//     a = b;
//     b = temp;
// }



// int main()
// {
//     int a = 10;
//     int& b = a;
//     int& c = a;
//     int& d = c;
    
//     return 0;
// }

// int main()
// {
//     int a = 10;
//     int& c = a;

//     a += 20;
//     cout << a << " " << c << endl;
//     c-= 20;
//     cout << a << " " << c << endl;
//     return 0;
// }

// int main()
// {
//     int a = 10;
//     int& c = a;
    
//     cout << &a << endl;
//     cout << &c << endl;
//     return 0;
// }


// int main()
// {
//     int a = 10;
//     int& c = a;
//     cout << a << " " << c << endl;

//     a++;
//     cout << a << " " << c << endl;

//     c++;
//     cout << a << " " << c << endl;
//     return 0;
// }


// int main()
// {
//     int* pa = nullptr;
//     int b = 10;
//     int* pb = &b;

//     int* &ra = pa;

//     ra = pb;
//     cout << *ra << endl;

//     return 0;
// }



